/* @author cerimice */
package Logica.Dialogo.Entidad;

import Sistema.Configuracion;
import Persistencia.Definicion.Cartucho;
import Persistencia.Definicion.Marca;
import Persistencia.Fachada.CartuchoFachada;

import Persistencia.Fachada.ListaFachada;
import java.util.List;
import cerimice.ValidarDatos;
import java.util.logging.Logger;

import com.vaadin.ui.Table;

public class CartuchoLogica
    {
    private String          error;
    private String          titulo;
    
    private ListaFachada    lista;
    private ValidarDatos    valida;
    private CartuchoFachada objFachada;
    
    public CartuchoLogica()
        {
        titulo      = "Cartuchos";
        error       = "";
        valida      = new ValidarDatos();
        objFachada  = new CartuchoFachada();
        lista       = new ListaFachada();
        }
    
    public String getTitulo()
        {return titulo;}
    
    public String getError()
        {return error;}
    
    public List<Marca> getListaMarca() throws Exception
        {
        try
            {return lista.listaMarca();}
        catch (Exception ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),ex.getMessage()); throw ex;}
        }
    
    public Table generarTabla(String valor,Table tabla) throws Exception
        {
        try
            {
            tabla.removeAllItems();
            List<Cartucho> listado = lista.listaCartucho(1,"%"+valor);
            for(Cartucho obj:listado)
                {tabla.addItem(new Object[]{obj.getClave(),obj.getObjCliente().getNombreCompleto(),obj.getObjMarca().getNombre(),obj.getModeloCartucho()},obj.getClave());}
            return tabla;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public Cartucho obtenerObjeto(String clave) throws Exception
        {
        try
            {
            Cartucho obj = objFachada.obtener(clave);
            return obj;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean agregarObjeto(String cliente, String marca, String modeloImpresora, String modeloCartucho, String numeroSerie) throws Exception
        {
        try
            {
            if(validar(cliente, marca, modeloImpresora, modeloCartucho, numeroSerie))
                {
                if(objFachada.agregar(cliente, marca, modeloImpresora, modeloCartucho, numeroSerie))
                    {return true;}
                }
            return false;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificarObjeto(String clave,String cliente, String marca, String modeloImpresora, String modeloCartucho, String numeroSerie) throws Exception
        {
        try
            {
            if(validar(clave,cliente, marca, modeloImpresora, modeloCartucho, numeroSerie))
                {
                if(objFachada.modificar(clave,cliente, marca, modeloImpresora, modeloCartucho, numeroSerie))
                    {return true;}
                }
            return false;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    private boolean validar(String cliente, String marca, String modeloImpresora, String modeloCartucho, String numeroSerie)
        {
        if(!valida.isCadena(cliente))           {error = "El campo CLIENTE no es valido"; return false;}
        if(!valida.isCadena(marca))             {error = "El campo MARCA no es valido"; return false;}
        if(!valida.isCadena(modeloImpresora))   {error = "El campo MODELO DE IMPRESORA no es valido"; return false;}
        if(!valida.isCadena(modeloCartucho))    {error = "El campo MODELO DE CARTUCHO no es valido"; return false;}
        //if(!valida.isCadena(numeroSerie))       {error = "El campo NUMERO DE SERIE no es valido"; return false;}
        return true;
        }
    
    private boolean validar(String clave,String cliente, String marca, String modeloImpresora, String modeloCartucho, String numeroSerie)
        {
        if(!valida.isCadena(clave))             {error = "El campo CLAVE no es valido"; return false;}
        if(!valida.isCadena(cliente))           {error = "El campo CLIENTE no es valido"; return false;}
        if(!valida.isCadena(marca))             {error = "El campo MARCA no es valido"; return false;}
        if(!valida.isCadena(modeloImpresora))   {error = "El campo MODELO DE IMPRESORA no es valido"; return false;}
        if(!valida.isCadena(modeloCartucho))    {error = "El campo MODELO DE CARTUCHO no es valido"; return false;}
        //if(!valida.isCadena(numeroSerie))       {error = "El campo NUMERO DE SERIE no es valido"; return false;}
        return true;
        }
    }
